// pages/home/goodDetails/index.js

import {
  getGoodsDetails
} from '../../../api/mainApi'

import {
  goodsSelectAmountPlus, // 添加一件商品到购物车
  getCartGoodsTotal // 获取购物车中已选中商品总数量
} from '../../../api/cartApi'

Page({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    showPop: false, //底部弹出窗口是否显示
    height: getApp().menuCapsulePosition.height, //胶囊按钮高度
    top: getApp().menuCapsulePosition.top, //胶囊按钮顶部距离
    right: getApp().menuCapsulePosition.right, //胶囊按钮右侧距离
    width: getApp().menuCapsulePosition.width, //胶囊按钮宽度
    windowHeight: getApp().availableWindow.height, //窗口高度
    directorylist: [],//购物指南列表
    goodColor: "red", //商品锚点颜色
    detailsColor: "", //详情锚点颜色
    opacity: 0, //锚点的不透明度
    currentScrolled: "good", //当前滚动到的锚点,默认为good
    curIndex: 1, //商品轮播图的当前索引,
    goodsDetails: {}, // 商品详细信息
    cartTotal: 0,
    goodsId: 0, // 商品ID
    safeList: [{
        tip: "平台保价",
        content: '您今天下单的商品,如果商品的实付单价并非当日的最低单价,平台会主动为您退差价,差价会在下单次日0时原路退还至您的支付账号.'
      },
      {
        tip: "48小时质量无忧",
        content: '预计收到货物日次日起48小时内,商品质量问题均可通过客服进行售后'
      },
      {
        tip: "极速退款",
        content: '通过客服申请退款后,可享受极速退款到账'
      },
      {
        tip: "缺货退款赠券",
        content: '您购买的商品如遇缺货,您可以申请缺货退款,审核通过后,还会额外赠送您1份优惠券礼包'
      }
    ],
    showPreview: false, //是否显示图片预览
    previewArr: [], //要预览的图片的地址数组
    previewIndex: 0, //预览的图片的索引
    showChooseSize: false, //是否显示选择上拉菜单
    sizeItemList: [], //规格信息列表
    lowPrice: "", //当前选择的商品的最低价
    heightPrice: "", //当前选择的商品的最高价
    selectIndex: -1, //选择的商品规格索引
    showChooseSizeOrigin: "", //打开选择规格的来源(添加到购物车或者立即购买)
    selectNum:1,//选择的商品的数量,默认是1
  },

  onLoad: function (option) {
    // 初始化当前页面要展示的商品ID
    this.data.goodsId = option.goodsId
  },

  onShow: function () {
    // console.log("1111111111111111111111111购物指南列表:",getApp().shoppingdirectorylist);
    //初始化选择的规格的数量和规格,为了防止立即购买时提交订单页面取消支付返回商品详情页面,没有恢复选择的规格和数量
    this.setData({
      selectIndex:-1,
      selectNum:1
    })
    //初始化购物指南列表
    this.setData({
      directorylist:getApp().shoppingdirectorylist
    })
    if (getApp().token) {
      // 初始化 当前页面底部tabbar购物车的徽标
      this.initialCartGoodsTotal()
    }
    // 根据商品ID请求对应详细信息
    getGoodsDetails(this.data.goodsId).then(data => {
      //设置商品的详细信息
      this.setData({
        goodsDetails: data.goods
      })
      console.log("请求商品详情信息成功", data);
      //找出商品的最低价和最高价
      let low = this.findLow(data.goods.commodity_specification)
      let height = this.findheight(data.goods.commodity_specification)
      //设置商品的最低价和最高价,以及商品的所有规格信息
      this.setData({
        lowPrice: low,
        heightPrice: height,
        sizeItemList: data.goods.commodity_specification
      })
    })
  },
  /**
   * 寻找最低价
   */
  findLow(arr) {
    // console.log("寻找最低价传入的数组:", arr);
    let temArr = arr.map(s => parseFloat(s.specificatioprice))
    // console.log("现价数组:", temArr);
    //临时数组为了取出最低价的索引
    let tem=temArr;
    temArr.sort((a, b) => a - b)
    // console.log("排序后的数组:", temArr);
    //取出最低价
    let min=temArr[0]
    //获取最低价的索引
    let minIndex=tem.findIndex(e=>e===min)
    this.setData({
      selectIndex:minIndex
    })
    return min;
  },
  /**
   * 寻找最高价
   */
  findheight(arr) {
    // console.log("寻找最高价传入的数组", arr);
    let temArr = arr.map(s => parseFloat(s.specificatiooriginal))
    // console.log("原价数组:", temArr);
    temArr.sort((a, b) => b - a)
    return temArr[0]
  },
  /**
   * 选择规格
   * @param {e} e 事件对象
   */
  selectGuige(e) {
    // console.log("选择了规格:", e.currentTarget.dataset.index);
    let index = e.currentTarget.dataset.index
    //该规格的数量小于0,不能选择
    if (this.data.sizeItemList[index].specificationumber <= 0) {
      return
    }
    //重复点击取消选中状态
    if (index === this.data.selectIndex) {
      index = -1
    }
    this.setData({
      selectIndex: index
    })
  },
  /**
   * 处理选择好规格后,点击确定按钮的事件
   */
  confirm() {
    let from = this.data.showChooseSizeOrigin
    //判断是否选择了规格
    if (this.data.selectIndex === -1) {
      wx.showToast({
        title: '还没有选择规格哦',
        icon: 'none',
        duration: 1000
      })
      return
    }
    //如果是从添加购物车进入的选择规格
    if (from === 'addCar') {
      let good={
        goods_id:this.data.goodsDetails.commodity_id,//商品id
        specificationid:this.data.sizeItemList[this.data.selectIndex].id,//商品的规格id
        amount:this.data.selectNum,//添加到购物车中的商品的数量
      }
      // 添加购物车
      // 获取商品ID
      goodsSelectAmountPlus(good).then(data => {
        // 初始化 当前页面底部tabbar购物车的徽标
        this.initialCartGoodsTotal()
        //初始化 购物车TarBar页面的徽标
        getApp().initialCartTabBarBadge()
        wx.showToast({
          title: '加入购物车成功',
          icon: 'success',
          duration: 2000
        })
        //添加购物车成功之后关闭规格选择菜单
        this.setData({
          showChooseSize:false,
          selectIndex:-1,
          selectNum:1
        })
      })
      //如果是从立即购买进入的选择规格
    } else if (from === 'buyNow') {
      let ref=this
      //立即购买
      // 跳转到提交订单页面
      wx.navigateTo({
        url: '/pages/submit-order/submit-order',
        success: function (res) {
          // 通过eventChannel来向打开页面传递数据
          res.eventChannel.emit('acceptDataFromGoodsPage', {
            id: ref.data.goodsDetails.commodity_id, // 商品ID
            name: ref.data.goodsDetails.commodity_name, // 名称
            currentprice: ref.data.sizeItemList[ref.data.selectIndex].specificatioprice, // 商品现价
            lastprice: ref.data.sizeItemList[ref.data.selectIndex].specificatiooriginal, // 商品原价
            pic: ref.data.goodsDetails.commodity_sideshow[0], // 商品图片
            specid:ref.data.sizeItemList[ref.data.selectIndex].id,//商品规格id
            specname:ref.data.sizeItemList[ref.data.selectIndex].specificationame, // 商品规格名称
            count: ref.data.selectNum // 商品数量
          })
        }
      })
    }
  },
  /**
   * 监听步进器的数量变化
   */
  countChange(e){
    // console.log("数量变化了:",e.detail);
    this.setData({
      selectNum:e.detail
    })
  },
  // 初始化 当前页面底部tabbar购物车的徽标
  initialCartGoodsTotal: function () {
    // 请求购物车中已选商品的数量
    getCartGoodsTotal().then(data => {
      console.log("initialCartGoodsTotal函数请求数据为：", data.total);
      this.setData({
        cartTotal: data.total
      })
    })
  },
  //返回上一级
  goodBack: function () {
    console.log("商品详情页返回到上一页");
    wx.navigateBack({
      delta: 1,
    })
    // 初始化购物车tabbar徽标
    getApp().initialCartTabBarBadge()
  },

  //切换轮播图
  cutSwiper: function (e) {
    console.log("切换了轮播图--------", e);
    this.setData({
      curIndex: e.detail.current + 1
    })
  },

  //跳转到首页
  handleClickHome: function () {
    console.log("点击了首页按钮....");
    wx.switchTab({
      url: '/pages/main/index'
    })
  },
  //跳转到购物车
  handleClickCart: function () {
    console.log("点击了购物车按钮....");
    wx.navigateTo({
      url: '/pages/shopping-cart-page/index',
    })
  },

  /**
   *  处理点击加入购物车按钮
   */
  handleAddCart: function () {
    // 如果没有token，跳转到登录页面
    if (!getApp().token) {
      wx.navigateTo({
        url: '/pages/my/login/login'
      })
      return
    }
    //-----------增加弹出商品规格选择上拉菜单--------------
    //显示选择规格菜单和显示选择规格菜单的来源(添加购物车或者立即购买)
    this.setData({
      showChooseSize: true,
      showChooseSizeOrigin: "addCar"
    })

    //------------------增加结束--------------------------

    console.log("点击了加入购物车按钮");
  },
  /**
   * 关闭选择规格的上拉菜单
   */
  closeChooseSize() {
    console.log("点击了遮罩层或者关闭按钮");
    this.setData({
      showChooseSize: false
    })
  },
  /**
   *  处理点击立即购买事件
   */
  handleBuyAtOnce: function () {
    // 如果没有token，跳转到登录页面
    if (!getApp().token) {
      wx.navigateTo({
        url: '/pages/my/login/login'
      })
      return
    }
    let goods = this.data.goodsDetails
    console.log("点击了立即购买按钮");
    this.setData({
      showChooseSize: true,
      showChooseSizeOrigin: "buyNow"
    })
    console.log("点击了跳转提交订单页面按钮");
  },
  //处理滚动事件
  handleScroll: function (e) {
    // event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
    // console.log("-------滚动了------", e.detail.scrollTop);
    let top = e.detail.scrollTop //滚动条顶部的距离
    let optem = 0; //透明度的临时值
    //根据scrollTop的值改变透明度
    if (top <= 0) {
      optem = 0
    } else if (top > 0 && top <= 200) {
      optem = (top / 20) * 0.1
    } else {
      optem = 1
    }
    // console.log("不透明度:", optem);
    this.setData({
      opacity: optem
    })
    //改变锚点的颜色
    if (top >= 300) {
      this.setData({
        goodColor: "",
        detailsColor: "red"
      })
    } else {
      this.setData({
        goodColor: "red",
        detailsColor: ""
      })
    }
  },
  //处理点击商品的锚点
  handleClickGoodAuth: function () {
    console.log("点击了商品的锚点");
    this.setData({
      goodColor: "red",
      detailsColor: "",
      currentScrolled: "good"
    })
  },
  //处理点击详情的锚点
  handleClickDetailAuth: function () {
    console.log("点击了详情的锚点");
    this.setData({
      goodColor: "",
      detailsColor: "red",
      currentScrolled: "details"
    })
  },
  /**
   * 处理点击图片后的图片的预览
   * @param {e} e 点击图片后产生的时间对象
   */
  clickImage(e) {
    console.log("点击了图片", e);
    //跳转到预览图片页面
    //跳转时向预览图片页面传递当前图片的索引和要预览的图片的地址数组
    let index = e.target.dataset.index
    let arr = e.target.dataset.arr
    console.log("当前图片的索引:", index);
    console.log("要预览的图片数组:", arr);
    //显示图片预览
    //微信小程序自带的图片预览功能
    wx.previewImage({
      urls: arr,
      current: arr[index]
    })
  },

})